package com.jpro.module.infra.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.lang.Nullable;

import java.util.Arrays;
import java.util.List;

/**
 * 系统配置。
 */
@Data
@ConfigurationProperties(prefix = "jpro.cms")
public class JproProperties {

    public JproProperties() {

    }

    /**
     * ElasticSearch 索引前缀
     */
    private String esPrefix = "cms";
    /**
     * 使用URL作为模板加载地址。使用对象存储保存模板时，需使用这种方式加载模板。
     */
    @Nullable
    private String templateLoaderUrl;
    /**
     * 文件上传后缀黑名单
     */
    private String uploadsBlacklist = "exe,com,bat,jsp,jspx,asp,aspx,php,html,htm,xhtml,xml,shtml,shtm";

    /**
     * 是否开启文库转换功能
     */
    private boolean convertEnable = false;

    /**
     * 是否演示网站。演示网站的 test 用户只能执行 GET 请求。
     */
    private boolean demo = false;

    /**
     * ElasticSearch Article 索引名
     */
    public String getContentIndexName() {
        return getEsPrefix() + "-content";
    }


    /**
     * 文件上传后缀排除列表
     */
    public List<String> getUploadsExtensionExcludes() {
        return Arrays.asList(uploadsBlacklist.split(","));
    }


    public String getUploadsBlacklist() {
        return uploadsBlacklist;
    }

    public void setUploadsBlacklist(String uploadsBlacklist) {
        this.uploadsBlacklist = uploadsBlacklist;
    }

    @Nullable
    public String getTemplateLoaderUrl() {
        return templateLoaderUrl;
    }

    public void setTemplateLoaderUrl(@Nullable String templateLoaderUrl) {
        this.templateLoaderUrl = templateLoaderUrl;
    }

    public boolean isConvertEnable() {
        return convertEnable;
    }

    public void setConvertEnable(boolean convertEnable) {
        this.convertEnable = convertEnable;
    }

    public boolean isDemo() {
        return demo;
    }

    public void setDemo(boolean demo) {
        this.demo = demo;
    }
}
